Virtual reality (VR) content or other 360 degree panoramic content can provide a uniquely immersive experience to a user. For example, giving a user the ability to “look around” inside a virtual environment or scene while motion or other content occurs around the user. VR or 360 degree panoramic content can be delivered as a fully rendered virtual environment, rendered in real time. For example, a virtual environment rendered in real time can allow a user free motion within the virtual environment, or may otherwise render the virtual environment in response to the actions of the user. However, detailed virtual environments require a high end client device to effectively render the virtual environment for VR in realtime. For example, an expensive high end PC or modern gaming console may be required to render a virtual environment for realtime VR. To allow a VR experience inside a virtual environment with less processing requirement for the client device, for example, to allow consumption of VR content on a phone or budget client device, virtual environments can be pre-rendered as 360 stereoscopic content. Using pre-rendered 360 stereoscopic content allows much of the processing overhead of rendering a virtual environment for VR to be offloaded, either to a separate 360 video system (which can then serve the 360 stereoscopic content to a client device) or to allow the client device to pre-render the 360 stereoscopic content.
As used herein, 360 stereoscopic content comprises 360 video content rendered from a virtual environment. In some implementations, a frame of 360 stereoscopic content comprises two eye views, one for each of a user's eyes. Each individual eye view is a 360 degree image generated to approximate the view from the associated eye through any orientation of the user's head. Depending on the user's head orientation, a client device can display the correct portions of each eye view to the associated eye, approximating the correct view of the virtual environment from the 360 stereoscopic content. However, playback of 360 stereoscopic content does not require rendering of the full virtual environment, but instead only the interpretation and display of the 360 video content contained within the 360 stereoscopic content.
Using stereoscopic 360 content requires a 360 video system, which can be the client device or a specialized server, to render eye views for each frame of the 360 stereoscopic content. However, rendering large volumes of 360 stereoscopic content using a traditional GPU rendering pipeline can be time consuming and inefficient compared to rendering standard 360 (non-stereoscopic) content. In some cases, common Graphic Processing Unit (GPU) based rendering techniques are inefficient at rendering eye views for 360 stereoscopic content, in some cases because of inbuilt limitations in standard GPU rendering pipelines. For example, commonly used GPU rendering pipelines and techniques are traditionally designed to render frames for display on a flat screen (such as a computer monitor or TV). Consequently, common GPU rendering pipelines are not specifically designed or optimized to render eye views for 360 stereoscopic content. In some cases, the volume of eye views needed to generate 360 stereoscopic content makes operation of a 360 video system inefficient and expensive. Therefore, improved techniques for rendering 360 stereoscopic content are required.